#ifndef __STATE_H__
#define __STATE_H__
/////////////////
//include
/////////////////
#include"MemberFuncPointer.h"
#include"Array.h"
/////////////////
//const
/////////////////

/////////////////
//class
/////////////////
template<class MEMBER_CLASS>
class State
{
public:
	State(int state_num)
	{
		state = Array<MemberFuncPointer<MEMBER_CLASS>>(state_num);
	}
	~State()
	{
	}
	void SetState(int state_index)
	{
		InitFunc(state_index);
		this->state_index = state_index;
	}
	virtual	void InitFunc(int state)
	{

	}
	void Use(MEMBER_CLASS* member){}
protected:
	Array<MemberFuncPointer<MEMBER_CLASS>> states;
	int state_index;
};
#endif __STATE_H__
